package src.CodeTop;

import java.util.Arrays;

/**
 *给定一个非负整数数组 A，返回一个数组，在该数组中， A 的所有偶数元素之后跟着所有奇数元素。
 *
 * 你可以返回满足此条件的任何数组作为答案。
 *
 *  
 *
 * 示例：
 *
 * 输入：[3,1,2,4]
 * 输出：[2,4,3,1]
 * 输出 [4,2,3,1]，[2,4,1,3] 和 [4,2,1,3] 也会被接受。
 *
 */

public class _905SortArrayByParity {
    public static void main(String[] args) {
        int[] nums = {0, 2};
        int[] target = sortArrayByParity(nums);
        System.out.println(Arrays.toString(target));
    }

    public static int[] sortArrayByParity(int[] nums) {
        // 校验合法性
        if (nums.length == 1)
            return nums;
        // 定义双指针
        int left = 0, right = nums.length - 1;
        // 双指针相向遍历
        while (left < right) {
            // 左指针找奇数
            while (nums[left] % 2 == 0 && left < right) {
                left++;
            }
            // 右指针找偶数
            while (nums[right] % 2 == 1 && left < right) {
                right--;
            }
            if (left >= right) {
                break;
            }
            // 交换两个数值
            int temp = nums[left];
            nums[left] = nums[right];
            nums[right] = temp;
            // 指针移动
            left++;
            right--;
        }
        return nums;
    }
}
